iT邦幫忙

2026 iThome 鐵人賽

DAY 17
0

Container標籤的key是出奇的多,要分幾篇來講。順道先總結.container四個標籤的作用:
[Unit] → systemd 相依與啟動順序
[Container] → podman run 的容器設定
[Service] → systemd 如何管理這個 container service
[Install] → 由哪個 target 啟動服務
而Container標籤key先整理清單如下:

Key 用途 對應 Podman
Image= 指定 container image,必填 image
ContainerName= 指定真正的 container 名稱 --name
Exec= 傳給 image ENTRYPOINT/CMD 的命令或參數 image 後面的 command
Entrypoint= 覆蓋 image 的 ENTRYPOINT --entrypoint
Environment= container 內環境變數 --env
EnvironmentFile= 從檔案載入環境變數 --env-file
EnvironmentHost= 把 host 環境變數帶進 container --env-host
Volume= bind mount / named volume --volume
Mount= Volume= 更完整的 mount 語法 --mount
PublishPort= host port 對映 container port --publish
ExposeHostPort= 宣告 exposed port,不等於 publish --expose
Network= container 使用哪個 network --network
NetworkAlias= 在 network 裡的 DNS alias --network-alias
IP= / IP6= 固定 IPv4 / IPv6 --ip, --ip6
DNS= 指定 DNS Server --dns
DNSSearch= DNS search domain --dns-search
DNSOption= DNS resolver option --dns-option
HostName= container hostname --hostname
AddHost= /etc/hosts 記錄 --add-host
User= container process 使用 UID/user --user
Group= container process 使用 group --user UID:GID
GroupAdd= 額外 supplementary group --group-add
UserNS= user namespace 模式 --userns
UIDMap= / GIDMap= 自訂 UID/GID mapping --uidmap, --gidmap
SubUIDMap= / SubGIDMap= 使用 /etc/subuid/subgid mapping --subuidname, --subgidname
Memory= memory limit --memory
PidsLimit= process 數量上限 --pids-limit
Ulimit= ulimit --ulimit
ShmSize= /dev/shm 大小 --shm-size
ReadOnly= root filesystem 唯讀 --read-only
Tmpfs= 建立 tmpfs --tmpfs
WorkingDir= container 裡工作目錄 --workdir
Timezone= container timezone --tz
RunInit= 使用 init process 處理 zombie --init
StopSignal= container stop 時 signal --stop-signal
StopTimeout= graceful stop 等待秒數 --stop-timeout
Pull= image pull policy --pull
LogDriver= logging driver --log-driver
LogOpt= logging driver option --log-opt
Label= container label --label
Annotation= OCI annotation --annotation
AutoUpdate= Podman auto-update autoupdate label
Secret= Podman secret --secret
AddCapability= 加 Linux capability --cap-add
DropCapability= 移除 capability --cap-drop
AddDevice= host device 帶進 container --device
NoNewPrivileges= 禁止 process 取得額外權限 security-opt
SeccompProfile= seccomp policy security-opt
SecurityLabel...= SELinux label 控制 security-opt
HealthCmd= container health check --health-*
Notify= sd_notify 行為 --sdnotify
Pod= 加入 Quadlet .pod --pod
StartWithPod= 由 pod 統一啟動 container Quadlet 行為
PodmanArgs= 補上 Quadlet 尚未支援的 run argument 額外 podman run args
GlobalArgs= 放在 podman 命令後、run 前面的 global option global args
Rootfs= 不使用 image,直接使用 rootfs --rootfs

而[Container]裡唯一必填的就只有Image,對比較熟悉單體系統維運的IT來說,重要的key也就以下幾個:

  • Image
  • Environment
  • Volume
  • Network
  • PublishPort
    剩下的若後面有缺篇幅就湊著寫。

上一篇
.container的install標籤
下一篇
.network的Section與key
系列文
Podman Quadlet-容器服務化(在單體系統到微服務之間)18
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言